package org.ala.tiktools.rpc.kcp.netty;

import io.netty.channel.ChannelConfig;


/**
 * @author ala
 * @date 2025-04-14 10:18
 */
public interface IKcpChannelConfig extends ChannelConfig {
    /**
     *  是是否开启Delay
     */
    boolean isNoDelay();
    IKcpChannelConfig setNoDelay(boolean noDelay);
    /**
     *  刷新间隔
     */
    int getInterval();
    IKcpChannelConfig setInterval(int interval);
    /**
     *  几次ack被跳过，快速重试（不用等到reSendTs）
     */
    int getFastResend();
    IKcpChannelConfig setFastResend(int fastResend);
    /**
     *  快速重试最大次数
     */
    int getFastLimit();
    IKcpChannelConfig setFastLimit(int limit);
    /**
     *  是否禁用拥塞窗口
     */
    boolean isNoCwnd();
    IKcpChannelConfig setNoCwnd(boolean cwnd);
    /**
     *  最小rto时间
     */
    int getMinRto();
    IKcpChannelConfig setMinRto(int minRto);
    /**
     *  mtu字节数
     */
    int getMtu();
    IKcpChannelConfig setMtu(int mtu);
    /**
     *  rcvWnd大小（单位：消息数）
     */
    int getRcvWnd();
    IKcpChannelConfig setRcvWnd(int rcvWnd);
    /**
     *  sndWnd大小（单位：消息数）
     */
    int getSndWnd();
    IKcpChannelConfig setSndWnd(int sndWnd);
    /**
     *  是否流模式
     */
    boolean isStream();
    IKcpChannelConfig setStream(boolean stream);
    /**
     *  xmit超过该线，kcp状态维置为-1
     */
    int getDeadLink();
    IKcpChannelConfig setDeadLink(int deadLink);
    /**
     *  是否自动设置conv
     *  <p> 以第一个收到消息的Conv为准
     */
    boolean isAutoSetConv();
    IKcpChannelConfig setAutoSetConv(boolean autoSetConv);
    /**
     *  是否快速flush
     */
    boolean isFastFlush();
    IKcpChannelConfig setFastFlush(boolean fastFlush);
    /**
     *  是否合并Segment
     *  <p> false:每从rcvQue中读到一个消息，触发一次fireChannelRead
     *  <p> true:把一次rcvQue中能读到的消息，合并成一个List，触发一次fireChannelRead
     */
    boolean isMergeSegmentBuf();
    IKcpChannelConfig setMergeSegmentBuf(boolean mergeSegmentBuf);


}
